﻿// Learn more about F# at http://fsharp.net

namespace Lilium.Data.Csv

module Reader =
    
    open System
    open System.Data

    open Lilium.Prelude

    type private CsvReader () = 
        interface IDataReader with
            member self.Close () = undefined ()
            member self.Depth = undefined ()
            member self.Dispose () = undefined ()
            member self.FieldCount = undefined () //TODO: первая на очереди..
            member self.GetBoolean i = undefined ()
            member self.GetByte i = undefined ()
            member self.GetBytes (i, fieldOffset, buffer, bufferoffset, length) = undefined ()
            member self.GetChar i = undefined ()
            member self.GetChars (i, fieldoffset, buffer, bufferoffset, length) = undefined ()
            member self.GetData i = undefined ()
            member self.GetDataTypeName i = undefined ()
            member self.GetDateTime i = undefined ()
            member self.GetDecimal i = undefined ()
            member self.GetDouble i = undefined ()
            member self.GetFloat i = undefined ()
            member self.GetFieldType i = undefined ()
            member self.GetGuid i = undefined ()
            member self.GetInt16 i = undefined ()
            member self.GetInt32 i = undefined ()
            member self.GetInt64 i = undefined ()
            member self.IsDBNull i = undefined ()
            member self.GetName i = undefined ()
            member self.GetOrdinal name = undefined ()
            member self.GetString i = undefined ()
            member self.GetValue i = undefined ()
            member self.GetValues i = undefined ()
            member self.GetSchemaTable () = undefined ()
            member self.IsClosed = undefined ()
            member self.Item with get (i : int) = undefined ()
                                                  null :> System.Object
            member self.Item with get (name : string) = undefined ()
                                                  null :> System.Object
            member self.NextResult () = undefined ()
            member self.Read () = undefined ()
            member self.RecordsAffected = undefined ()

    // operators

    // (a -> b) -> f a -> f b
    let (<@>) project funct = undefined ()

    // f (a -> b) -> f a -> f b
    let (<*>) liftedProject funct = undefined ()

    // f a -> f a -> f a
    let (<|>) a b = undefined ()

    // fields generators

    let constField a = undefined ()

    let field name = undefined ()

    let guard predicate = undefined ()

    [<Obsolete("Use reader builder")>]
    let create = new CsvReader () :> IDataReader 